﻿'''
题目描述
有N个正整数组成的一个序列。给定整数sum，求长度最长的连续子序列，使他们的和等于sum，返回此子序列的长度，
如果没有满足要求的序列，返回-1。
输入描述
第一行输入是：N个正整数组成的一个序列
第二行输入是：给定整数sum
输出描述
最长的连续子序列的长度
备注
输入序列仅由数字和英文逗号构成，数字之间采用英文逗号分隔
序列长度：1 <= N <= 200
输入序列不考虑异常情况
示例1
输入
1,2,3,4,2
6
输出
3
说明
1,2,3和4,2两个序列均能满足要求，所以最长的连续序列为1,2,3，因此结果为3。
示例2
输入
1,2,3,4,2
20
输出
-1
说明
没有满足要求的子序列，返回-1
解题思路
使用滑动窗口的方式来解决这个问题
通过 left 和 right 这两个指针维护一个滑动窗口，sum 用于跟踪当前窗口内的元素和。
当 sum 大于 target 时，代码缩小窗口，通过移动左指针并减少 sum 来调整窗口。
一旦 sum 等于 target，更新最大长度 maxLen。
'''
#输入描述
#第一行输入是：N个正整数组成的一个序列
#第二行输入是：给定整数sum
#输出描述
#最长的连续子序列的长度

#读取输入
num_arr = list(map(int,input().split(',')))
target = int(input())

#滑窗或快慢指针遍历序列并统计长度，否则返回-1
left,right,num_sum, max_len = 0,0,0,-1
#快慢指针通常使用while
while right < len(num_arr):
    #当前的num加入和，并右移窗口，注意需要右移，方便和左指针比较(也可以后边右移，比较条件要变)
    num_sum += num_arr[right]
    
    #如果大于目标值并且左指针没有超过右指针，收缩左窗口
    while num_sum > target and left < right:
        num_sum -= num_arr[left]
        left += 1
    #如果相等，统计长度
    if num_sum == target:
        max_len = max(max_len,right - left + 1)
    #注意：窗口右移，继续统计或者添加到开头，这样计算长度变为：right-left
    right += 1
#输出结果
print(max_len)

